const fp = require('lodash/fp')
const cars = [
    { name: 'Ferrari FF ', horsepower: 660, dollar_value: 700000, in_stock: true },
    { name: 'Spyker c12 Zagato', horsepower: 650, dollar_value: 648000, in_stock: false },
    { name: 'Jaguar XKR-S', horsepower: 550, dollar_value: 132000, in_stock: false },
    { name: 'Audi R8 ', horsepower: 525, dollar_value: 114200, in_stock: false },
    { name: 'Aston Martin one-77', horsepower: 750, dollar_value: 1850000, in_stock: true },
    { name: 'Pagani Huayra ', horsepower: 700, dollar_value: 1300000, in_stock: false },
]
//ex1
let isLastInStock = fp.flowRight([fp.prop("in_stock"), fp.last])
//ex2
let isFristName = fp.flowRight([fp.prop("name"), fp.first])(cars)
//ex3
let _average = function (xs) {
    return fp.reduce(fp.add, 0, xs) / xs.length
}
// let averageDollarValue =function (cars){
//     let dollar_values =fp.map(function(car){
//         return car.dollar_value
//     },cars)
//     return _average(dollar_values)
// }
let averageDollarValue = fp.flowRight([_average, fp.map(function (car) {
    return car.dollar_value
})])(cars)
//ex4
let _underscore = fp.replace(/\W+/g, "_")

let sanitizeNames = function (cars) {
    return fp.map(function (car) {
        return fp.flowRight([_underscore, fp.toLower])(car.name)
    })(cars)
}
console.log(sanitizeNames(cars));